package com.wy2cloud.core.security;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;

/***
 * des加解密码工具�?
 * @author WYY 2015-9-25
 */
public class DesCrytoUtilty
{

	/**
	 * 加密
	 * @param text 待加密内�?
	 * @param key 公钥 长度32字符
	 * @return
	 */
	public static String DESEncrypt(String text, String key)
	{
		try
		{
			// 进行3-DES加密后的内容的字�?
			DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
			SecretKey skey = keyFactory.generateSecret(dks);
			Cipher cipher = Cipher.getInstance("DESede");
			cipher.init(Cipher.ENCRYPT_MODE, skey);
			byte[] encryptedData = cipher.doFinal(text.getBytes());
			// 进行3-DES加密后的内容进行BASE64编码
			BASE64Encoder base64en = new BASE64Encoder();
			return base64en.encode(encryptedData);
		} catch (Exception e){
			e.printStackTrace();
			return text;
		}
	}

	/**
	 * 解密
	 * @param text 待解密内�?
	 * @param key 公钥
	 * @return
	 */
	public static String DESDecrypt(String text, String key)
	{
		try
		{
			// 进行3-DES加密后的内容进行BASE64解码
			BASE64Decoder base64Decode = new BASE64Decoder();
			byte[] base64DValue = base64Decode.decodeBuffer(text);
			// 进行3-DES解密后的内容的字�?
			DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
			SecretKey skey = keyFactory.generateSecret(dks);
			Cipher cipher = Cipher.getInstance("DESede");
			cipher.init(Cipher.DECRYPT_MODE, skey);
			byte[] encryptedData = cipher.doFinal(base64DValue);
			return new String(encryptedData);
		} catch (Exception e)
		{
			e.printStackTrace();
			return text;
		}
	}
	 

}
